import java.util.HashMap;

public class demo1 {
    class Solution {
        public int lenLongestFibSubseq(int[] arr) {
            int n=arr.length;
            HashMap<Integer,Integer>map=new HashMap<>();
            int[][]dp=new int[n][n];
            for(int i=0;i<n;i++){
                map.put(arr[i],i);
            }
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++)dp[i][j]=2;
            }
            int num=0;
            for(int j=2;j<n;j++){
                for(int i=1;i<j;i++){
                    int ret=arr[j]-arr[i];
                    if(ret<arr[i]&&map.containsKey(ret)){
                        dp[i][j]=dp[map.get(ret)][i]+1;
                    }
                    num=Math.max(num,dp[i][j]);
                }

            }
            return num>2 ? num : 0;
        }
    }
}
